package gov.mmgt.netmanager.ui;

import gov.mmgt.netmanager.common.Constant;
import gov.mmgt.netmanager.ui.util.UIUtil;

import java.io.InputStream;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseTrackAdapter;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.wb.swt.SWTResourceManager;

public class MainUI {

	protected Shell shell;
	protected Label smallBtn;
	protected Label closeBtn;

	/**
	 * Launch the application.
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			MainUI window = new MainUI();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();

		// 鼠标拖动
		UIUtil.drag(shell);
		
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shell = new Shell(SWT.NO_TRIM);
		shell.setSize(1000, 600);
		shell.setText("茂名市国土资源局网络管理工具");
		InputStream is = this.getClass().getResourceAsStream(
				"images/main_ui_top.png");
		shell.setBackgroundImage(new Image(Display.getDefault(), is));
		
		shell.setBackgroundMode(SWT.INHERIT_FORCE);

		// 设置程序图标
		is = this.getClass().getResourceAsStream("images/ico.png");
		Image image = new Image(Display.getDefault(), is);
		shell.setImage(image);

		// 窗口居中
		UIUtil.moveWinToMiddle(shell);

		//================================工作区================================//
		Composite workArea = new Composite(shell, SWT.NONE);
		workArea.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
		workArea.setBounds(0, 101, 1000, 464);
		is = this.getClass().getResourceAsStream("images/main_ui_center.png");
		workArea.setBackgroundImage(new Image(Display.getDefault(), is));
		//================================工作区================================//

		//================================底部================================//
		Composite bottom = new Composite(shell, SWT.NONE);
		bottom.setBounds(0, 564, 1000, 36);
		is = this.getClass().getResourceAsStream("images/main_ui_bottom.png");
		bottom.setBackgroundImage(new Image(Display.getDefault(), is));
		//================================底部================================//

		// ===============================最小化按钮===============================//
		smallBtn = new Label(shell, SWT.NONE);
		smallBtn.setToolTipText("最小化");

		smallBtn.addMouseTrackListener(new MouseTrackAdapter() {
			// 鼠标在按钮上的事件
			@Override
			public void mouseEnter(MouseEvent e) {
				InputStream is = this.getClass().getResourceAsStream(
						"images/mini_on.png");
				smallBtn.setImage(new Image(Display.getDefault(), is));
			}

			// 鼠标离开事件
			@Override
			public void mouseExit(MouseEvent e) {
				InputStream is = this.getClass().getResourceAsStream(
						"images/mini_off.png");
				smallBtn.setImage(new Image(Display.getDefault(), is));
			}
		});

		smallBtn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				shell.setMinimized(true);
			}
		});

		smallBtn.setBounds(927, 0, 31, 21);
		is = this.getClass().getResourceAsStream("images/mini_off.png");
		smallBtn.setImage(new Image(Display.getDefault(), is));
		// ===============================最小化按钮===============================//

		// ===============================关闭按钮===============================//
		closeBtn = new Label(shell, SWT.NONE);
		closeBtn.setToolTipText("关闭");

		closeBtn.addMouseTrackListener(new MouseTrackAdapter() {
			// 鼠标在按钮上的事件
			@Override
			public void mouseEnter(MouseEvent e) {
				InputStream is = this.getClass().getResourceAsStream(
						"images/close_on.png");
				closeBtn.setImage(new Image(Display.getDefault(), is));
			}

			// 鼠标离开事件
			@Override
			public void mouseExit(MouseEvent e) {
				InputStream is = this.getClass().getResourceAsStream(
						"images/close_off.png");
				closeBtn.setImage(new Image(Display.getDefault(), is));
			}
		});

		closeBtn.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseUp(MouseEvent e) {
				shell.close();
			}
		});

		closeBtn.setBounds(960, 0, 31, 19);
		is = this.getClass().getResourceAsStream("images/close_off.png");
		closeBtn.setImage(new Image(Display.getDefault(), is));
		// ===============================关闭按钮===============================//
		
		//================================logo================================//
		Label logo = new Label(shell, SWT.NONE);
		logo.setBounds(701, 24, 289, 71);
		is = this.getClass().getResourceAsStream("images/logo.png");
		logo.setImage(new Image(Display.getDefault(), is));
		//================================logo================================//
		
		Label titleLabel = new Label(shell, SWT.NONE);
		titleLabel.setForeground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
		titleLabel.setBounds(10, 5, 164, 15);
		titleLabel.setText("网络管理系统 " + Constant.PARAMETER.getVersion());
		
		//================================工具栏===============================//
		ToolBar toolBar = new ToolBar(shell, SWT.FLAT | SWT.WRAP);
		toolBar.setBounds(10, 20, 455, 82);
		//================================工具栏===============================//
		
		//================================初始化=============================//
		ToolItem initTool = new ToolItem(toolBar, SWT.PUSH);
		is = this.getClass().getResourceAsStream("images/init.png");
		initTool.setImage(new Image(Display.getDefault(), is));
		initTool.setToolTipText("IP库初始化");
		//================================初始化=============================//
		
		//================================启动监控=============================//
		ToolItem startTool = new ToolItem(toolBar, SWT.PUSH);
		is = this.getClass().getResourceAsStream("images/start.png");
		startTool.setImage(new Image(Display.getDefault(), is));
		startTool.setToolTipText("启动网络监控服务");
		//================================启动监控=============================//
		
		//================================停止监控=============================//
		ToolItem stopTool = new ToolItem(toolBar, SWT.PUSH);
		is = this.getClass().getResourceAsStream("images/stop.png");
		stopTool.setImage(new Image(Display.getDefault(), is));
		stopTool.setToolTipText("停止网络监控服务");
		//================================停止监控=============================//
		
		//================================监控日志=============================//
		ToolItem logsTool = new ToolItem(toolBar, SWT.PUSH);
		is = this.getClass().getResourceAsStream("images/alert_logs.png");
		logsTool.setImage(new Image(Display.getDefault(), is));
		logsTool.setToolTipText("查看监控日志");
		//================================监控日志=============================//
		
		//================================系统设置=============================//
		ToolItem settingTool = new ToolItem(toolBar, SWT.PUSH);
		
		settingTool.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				SystemSettingDialog sysSettingDialog = new SystemSettingDialog(shell, SWT.NONE);
				sysSettingDialog.open();
			}
		});
		
		is = this.getClass().getResourceAsStream("images/setting.png");
		settingTool.setImage(new Image(Display.getDefault(), is));
		settingTool.setToolTipText("系统参数设置");
		//================================系统设置=============================//
		
		//================================关于=============================//
		ToolItem aboutTool = new ToolItem(toolBar, SWT.PUSH);
		is = this.getClass().getResourceAsStream("images/about.png");
		aboutTool.setImage(new Image(Display.getDefault(), is));
		aboutTool.setToolTipText("关于网络管理系统的信息");
		//================================关于=============================//
		
		//================================退出=============================//
		ToolItem logoutTool = new ToolItem(toolBar, SWT.PUSH);
		
		logoutTool.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				shell.close();
			}
		});
		
		is = this.getClass().getResourceAsStream("images/logout.png");
		logoutTool.setImage(new Image(Display.getDefault(), is));
		logoutTool.setToolTipText("退出网络管理系统");
		//================================退出=============================//
	}
}
